package com.ruoyi.accounting.service.impl;

import com.ruoyi.accounting.domain.AccAccountBook;
import com.ruoyi.accounting.mapper.AccAccountBookMapper;
import com.ruoyi.accounting.service.AccAccountBookService;
import com.ruoyi.common.core.enums.DelFlag;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.security.utils.SecurityUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.List;

/**
 * 账本Service业务层处理
 *
 * @author ruoyi
 * @date 2025-01-14
 */
@Service
@Slf4j
public class AccAccountBookServiceImpl implements AccAccountBookService {
    @Autowired
    private AccAccountBookMapper accAccountBookMapper;

    /**
     * 查询账本
     *
     * @param id 账本主键
     * @return 账本
     */
    @Override
    public AccAccountBook selectAccAccountBookById(String id) {
        return accAccountBookMapper.selectAccAccountBookById(id);
    }

    /**
     * 查询账本列表
     *
     * @param accAccountBook 账本
     * @return 账本
     */
    @Override
    public List<AccAccountBook> selectAccAccountBookList(AccAccountBook accAccountBook) {
        return accAccountBookMapper.selectAccAccountBookList(accAccountBook);
    }

    /**
     * 新增账本
     *
     * @param accAccountBook 账本
     * @return 结果
     */
    @Override
    public int insertAccAccountBook(AccAccountBook accAccountBook) {
        accAccountBook.setCreateTime(DateUtils.getNowDate());
        accAccountBook.setDelFlag(DelFlag.normal.getCode());
        accAccountBook.setGeneralIncome(BigDecimal.ZERO);
        accAccountBook.setAggregateExpenditure(BigDecimal.ZERO);
        return accAccountBookMapper.insertAccAccountBook(accAccountBook);
    }

    /**
     * 修改账本
     *
     * @param accAccountBook 账本
     * @return 结果
     */
    @Override
    public int updateAccAccountBook(AccAccountBook accAccountBook) {
        accAccountBook.setUpdateTime(DateUtils.getNowDate());
        accAccountBook.setUpdateBy(SecurityUtils.getUsername());
        return accAccountBookMapper.updateAccAccountBook(accAccountBook);
    }

    /**
     * 批量删除账本
     *
     * @param ids 需要删除的账本主键
     * @return 结果
     */
    @Override
    public int deleteAccAccountBookByIds(String[] ids) {
        return accAccountBookMapper.deleteAccAccountBookByIds(ids);
    }

    /**
     * 删除账本信息
     *
     * @param id 账本主键
     * @return 结果
     */
    @Override
    public int deleteAccAccountBookById(String id) {
        return accAccountBookMapper.deleteAccAccountBookById(id);
    }

    @Override
    public int updateBookStatus(AccAccountBook accAccountBook) {
        return accAccountBookMapper.updateAccAccountBook(accAccountBook);
    }


}
